package com.bdf.ipharma.service;


import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.bdf.ipharma.dao.ProductoDAO;
import com.bdf.ipharma.model.Lote;
import com.bdf.ipharma.model.ProductoDispenser;
import com.bdf.ipharma.model.bo.LogMovimientoStock;
import com.bdf.ipharma.model.map.ProductoStockMap;
import com.bdf.ipharma.model.map.UbicacionProductoMap;
import com.bdf.ipharma.starter.McdPrs;

/**
 *
 * @author jmazzetti
 */
@Service("productoService")
public class ProductoService  {

    @Autowired
    private ProductoDAO productoDao;

    private Logger logger = Logger.getLogger(ProductoService.class);

    public List<ProductoStockMap> selectAllProductos(String idDispenser) {
        logger.debug("begin select at "+this.getClass().getName());
        List<ProductoStockMap> listProductos = productoDao.selectAllProductos(idDispenser);
        
        logger.debug("end select at "+this.getClass().getName());
        return listProductos;
    }

    public List<ProductoStockMap> getBotonera() {
        logger.debug("begin select at "+this.getClass().getName());
        
        List<ProductoStockMap> listProdDispenser = productoDao.getBotonera();
        
        logger.debug("end select at "+this.getClass().getName());
        return listProdDispenser;
    }
    
    public List<Lote> getListLotes(Lote loteDescripcionSearch){
    	List<Lote> listLotes = productoDao.getListLotes(loteDescripcionSearch);
    	return listLotes;    	
    }

    /** Primero persiste en la base lo que quiere reponer y luego actualiza **/
    public void reponer(ProductoDispenser productoDispenser){
    	productoDao.reponer(productoDispenser);
    }

	public ProductoDispenser getLoteById(Lote loteDescripcionSearch) {
		ProductoDispenser pd = new ProductoDispenser();
		pd = productoDao.getLoteById(loteDescripcionSearch);
		return pd;
	}
	
	
	public List<UbicacionProductoMap> getUbicacionFilaColumna(UbicacionProductoMap ubicacionProductoMap){
    	List<UbicacionProductoMap> listUbicaciones = productoDao.getUbicacionFilaColumna(ubicacionProductoMap);
    	return listUbicaciones;    	
    }
	
	public void vaciarDispenser(LogMovimientoStock logMovimientoStock){
		productoDao.vaciarDispenser(logMovimientoStock);		
	}
	
	public void reponerDispenser(LogMovimientoStock logMovimientoStock){
		productoDao.reponerDispenser(logMovimientoStock);		
	}
	
	
	public void borrarCantidadCero (){		
		List<ProductoDispenser> listIdsABorrar = productoDao.getIdsAborrar(McdPrs.tipoDispenser);
		for(ProductoDispenser prodABorrar: listIdsABorrar){
			productoDao.updateCantidadCero(Integer.parseInt(String.valueOf(prodABorrar.getId())));
		}
		logger.debug("*** SE PUSIERON TODAS LAS CANTIDADES EN CERO ***");
	}
	
	public void extraerProducto(LogMovimientoStock logMovimientoStock){
		productoDao.extrarProducto(logMovimientoStock);
	}
	
	
}

